let path = require("path");
let HtmlWebpackPlugin = require("html-webpack-plugin");
// 1. 引入
// 模块 happypack 可以实现多线程来打包
let Happypack = require("happypack");
let webpack = require("webpack");
module.exports = {
  // 抽离公共代码
  optimization: {
    //   splitChunks: {
    //     cacheGroups: {
    //       common: {
    //         chunks: "initial",
    //         minSize: 0,
    //         minChunks: 2,
    //       },
    //       vendor: {
    //         priority: 1,
    //         test: /node_modules/,
    //         chunks: "initial",
    //         minSize: 0,
    //         minChunks: 2,
    //       }
    //     },
    //   },
  },
  devServer: {
    hot: true, // 启用热更新
  },
  mode: "production", // 模式 默认两种 production development
  entry: "./src/index.js", // 入口
  // entry: {
  //   index: "./src/index.js",
  //   test: "./src/test.js",
  // },
  output: {
    filename: "index.js",
    // filename: "[name].js",
    path: path.resolve(__dirname, "dist"), // 路径必须是一个绝对路径
  },

  plugins: [
    // 3. 设置对应的loader
    // new Happypack({
    //   id: "js",
    //   loaders: [
    //     {
    //       loader: "babel-loader",
    //       query: {
    //         presets: ["@babel/preset-env", "@babel/preset-react"],
    //       },
    //     },
    //   ],
    // }),
    // // 3. 设置对应的loader
    // new Happypack({
    //   id: "style",
    //   threads: 4, // 开启的线程数
    //   loaders: ["css-loader", "postcss-loader"],
    // }),
    // new webpack.LoaderOptionsPlugin({
    //   options: {
    //     sideEffects: false, // tree-shaking
    //   },
    // }),
    
    new HtmlWebpackPlugin({
      template: "./src/index.html", // 模板
      filename: "index.html", // 文件名
    }),
  ],
  // 模块
  module: {
    // 规则
    rules: [
      {
        test: /\.js$/, // normal 普通的loader
        // 2. 匹配
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env", "@babel/preset-react"],
          },
        },
        include: path.resolve(__dirname, "src"),
        exclude: /node_modules/,
      },
      // {
      //   test: /\.css$/,
      //   // 2. 匹配
      //   use: "Happypack/loader?id=style",
      // },
    ],
  },
};
